package servlet;

import util.StringUtil;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

/**
 * @author Miss Chen
 * @version 1.0
 * @date 2024年08月30日15:45
 */
@WebServlet("/addEmp")
public class AddEmpServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out=response.getWriter();

        //1.post请求,告诉服务器，以什么样的编码对请求中的数据进行解析
        request.setCharacterEncoding("UTf-8");



        // 2.get请求
        // 方式一:所有的解析是直接由服务器进行操作的，我们无法在代码中进行控制
        // 服务器默认的字符集为: ISO‐8859‐1
        // 将ISO‐8859‐1 的字符串转换成指定编码的字符串
        //对于请求参数，可能存在无数个，建议可以创建一个工具类进行转换

        // 方式二:打开tomcat安装目录下的conf目录中的server.xml文件
        //         找到端口号配置的位置
        // 在端口号配置的标签的属性部分新增一个属性
        //         URIEncoding="UTF-8"


        // request.getParameter(key)获取请求中的数据
        // key表示的是form表单的name属性值
        String name=request.getParameter("name");
        // name=new String(name.getBytes("ISO-8859-1"),"UTF-8");

        System.out.println(name);
        String salary=request.getParameter("salary");
        String gender=request.getParameter("gender");
        String edu=request.getParameter("edu");

        // request.getParameterValues(key)用于获取职为数组的场景，一般用于复选框
        String[] hobbies=request.getParameterValues("hobbies");

        Connection conn=null;
        PreparedStatement ps=null;
        String url="jdbc:mysql://127.0.0.1:3306/web?useUnicode=true&characterEncoding=utf-8";
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn= DriverManager.getConnection(url,"root","root");
            String sql=new StringBuffer()
                    .append(" insert into t_emp ")
                    .append(" (name,salary,gender,edu,hobbies) ")
                    .append(" values  ")
                    .append(" (?,?,?,?,?) ")
                    .toString();
            ps=conn.prepareStatement(sql);
            ps.setString(1,name);
            ps.setDouble(2,Double.parseDouble(salary));
            ps.setString(3,gender);
            ps.setString(4,edu);
            ps.setString(5, StringUtil.arrayToString(hobbies));

            //执行DML操作
            ps.executeUpdate();
            // out.println("<h1>恭喜您，添加成功</h1>");

            // 通过页面跳转的方式进入到员工列表
            // 有2种实现方式
            //1.重定向
            response.sendRedirect("findAll");
            // response.sendRedirect("https://www.baidu.com");
            // response.sendRedirect("WEB-INF/test.jsp");

            // 2.转发
            // request.getRequestDispatcher("https://www.baidu.com").forward(request,response);
            // request.getRequestDispatcher("WEB-INF/test.jsp").forward(request,response);
            // request.getRequestDispatcher("findAll").forward(request,response);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
}
